// 创建接口
// 导入
let express = require('express')
let {arr_user} = require("./index")
let app = express()

// 中间件
// 在处理服务器请求时 需要进行很多细节的处理
// 比如 设置请求体 报文报头 以及设置cookie 等等
// 前后端交互最重要的就是 request 和 respond  两个参数
// 其次是next    因为每一个中间件执行完毕 应该进入下一个中间件
// 因此调用next()
// 常见的应用级别的中间件 app.use() 或者是 app.post() 或者是app.get()
app.use((req,res,next)=>{
    // 允许跨域
    res.setHeader('Access-Control-Allow-Origin',"*")
    // Access-Control-Allow-Headers   请求头的意思
    // 将添加的数据传给后端 需要设置请求头
    // 让后端同意接收 
    res.setHeader('Access-Control-Allow-Headers',"*")
    // 调用next() 方法表示通行 放行 继续执行
    next()
})

// 启动
// req  请求成功
// res  响应请求
app.listen(8080,(req,res) => {
    console.log("服务器已启动，端口号为8080");
})

// 查询内容
app.get("/userInfor",(req,res)=>{
    // 请求头
    // res.setHeader('Access-Control-Allow-Origin',"*")
    res.send(arr_user)
})

// 分页查询
app.get("/pages",(req,res)=>{
    // 请求头
    // res.setHeader('Access-Control-Allow-Origin',"*")
    // res.send(arr_user)
    // 获取url 中的参数
    // console.log(req.query);
    // 获取当前页面的数量 和每页的数量
    let pageIndex = parseInt(req.query.pageIndex)
    let pageNumber = parseInt(req.query.pageNumber)
    // 分页查询，获取结果
    // slice() 截取
    // 开始下标  (pageIndex-1)*pageNumber   0    (1-1)*5
    // 结束下标  pageIndex*pageNumber       5    1*5
    let page =arr_user.slice((pageIndex-1)*pageNumber,pageIndex*pageNumber)
    // 获取总数据
    let count =arr_user.length
    // 发送
    res.send({page,count})
})

// 设置允许接收 json 格式的文件
app.use(express.json())
// 设置允许接收 url 格式的文件
app.use(express.urlencoded({extended:false}))
// 添加
app.post("/add",(req,res)=>{
    // res.setHeader('Access-Control-Allow-Origin',"*")
    // req.body 存储在post 请求中的参数
    // console.log(req.body);
    let new_arr = req.body
    arr_user.push(new_arr)
    res.send(true)
})

// 获取内容，根据id账号 找到对应的内容
// 判断账号是否存在
app.get("/getInforOne",(req,res)=>{
    // 获取id账号
    // 解构
    let {id} =req.query
    // 根据id账号 返回人员信息
    let infor_id = arr_user.find(item => item.id == id)
    res.send(infor_id)
    // 因为之前写了中间件
    // 所以在这边可以不用写允许跨域
})

// 修改 
app.post("/amendInfor",(req,res)=>{
    // 获取的全部内容
    let infor = req.body
    // 根据id账号找出对象的信息 下标的位置
    let index_inf = arr_user.findIndex(i => i.id == infor.id)
    arr_user[index_inf] = infor
    // 发送
    res.send(true)
})

// 删除
app.post("/delete",(req,res)=>{
    // 获取的全部内容
    let infor = req.body
    let index = arr_user.findIndex(i => i.id == infor.id)
    arr_user.splice(index,1)
    // 发送
    res.send(true)
})